class EstadoController {

    int total = 0;

    def index = {
        redirect(action: "create", params: params)
    }

    def create = {
        if(!verificaLogon()){
            return;
        }
        def estadoInstance     = new Estado()
        def estadoInstanceList = Estado.findAll();

        estadoInstance.properties = params

       if(estadoInstanceList){
            total = estadoInstanceList.count();
        }

        return [estadoInstance     : estadoInstance,
                estadoInstanceList : estadoInstanceList,
                estadoInstanceTotal: total];
    }

    def save = {
        if(!verificaLogon()){
            return;
        }
        def estadoInstance     = new Estado(params)
        def estadoInstanceList = Estado.findAll();

        if(estadoInstanceList){
            total = estadoInstanceList.count();
        }

        if (estadoInstance.save(flush: true)) {
            flash.message = "Dados cadastrados com sucesso!";
            redirect(action: "create");
        }
        else
        {
            render(view:"create",model: [estadoInstance     : estadoInstance,
                                         estadoInstanceList : estadoInstanceList,
                                         estadoInstanceTotal: total]);
        }
    }

    def edit = {
        if(!verificaLogon()){
            return;
        }
        def estadoInstance     = Estado.get(params.id)
        def estadoInstanceList = Estado.findAll();

        if(estadoInstanceList){
            total = estadoInstanceList.count();
        }

        if (!estadoInstance) {
            flash.message="Estado não encontrado!";
            redirect(action: "create");
        }
        else
        {
            return [estadoInstance     : estadoInstance,
                    estadoInstanceList : estadoInstanceList,
                    estadoInstanceTotal: total];
        }
    }

    def update = {
        if(!verificaLogon()){
            return;
        }
        def estadoInstance = Estado.get(params.id);
        def estadoInstanceList = Estado.findAll();

        if(estadoInstanceList){
            total = estadoInstanceList.count();
        }
        estadoInstance.properties = params;
        if (estadoInstance.save())
        {
            flash.message = "Dados alterados com sucesso.";
            redirect(action: "create");
        }
        else
        {
            render(view:"edit",model: [estadoInstance     : estadoInstance,
                                       estadoInstanceList : estadoInstanceList,
                                       estadoInstanceTotal: total]);
        }
    }

    def delete = {
        if(!verificaLogon()){
            return;
        }
        def estadoInstance = Estado.findById(params.id)

        if (estadoInstance) {
            try {
                estadoInstance.delete(flush: true)
                flash.message = "Registro excluido com sucesso!"
            }
            catch (org.springframework.dao.DataIntegrityViolationException e) {
                flash.message = "${message(code: 'default.not.deleted.message', args: [message(code: 'estado.label', default: 'Estado'), estadoInstance.nome])}"
            }
        }
        else {
            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'estado.label', default: 'Estado'), estadoInstance.nome])}" //params.id
        }
        redirect(action: "create")
    }

    /*
     * Método que verifica se o usuário está logado.
     * Se não estiver logado é redirecionado para home
     */
    private boolean verificaLogon() {
        if(!session["pessoa"]){
            flash.message = "Você precisa estar logado para acessar esta página.";
            redirect(controller:'login', action:'auth');
            return false;
        }

        return true;
    }
}
